﻿Imports Logica

Public Class BuscarUsuario

    ''' <summary>
    ''' Carga la pantalla de buscar usuario.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 18/06/2010, Modificado: 27/06/2010</remarks>
    Private Sub BuscarUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim identificacion As String

        ' Refente al DataGridView
        dgvUsuarios.SelectionMode = DataGridViewSelectionMode.FullRowSelect
        dgvUsuarios.MultiSelect = False

        identificacion = Gestor.usuarioActual()("identificacion")

        ' Permiso de eliminar usuario.
        If Not Gestor.usuarioTienePermiso(identificacion, 9) Then
            btnEliminar.Enabled = False
        End If

        ' Permiso de cambiar estado.
        If Not Gestor.usuarioTienePermiso(identificacion, 10) Then
            btnCambiarEstado.Enabled = False
        End If

        ' Permiso de consultar usuario.
        If Not Gestor.usuarioTienePermiso(identificacion, 11) Then
            btnConsultar.Enabled = False
        End If

        ' Permiso de consultar metas.
        If Not Gestor.usuarioTienePermiso(identificacion, 21) Then
            btnMetas.Enabled = False
        End If

        ' Permiso de asignar puesto.
        If Not Gestor.usuarioTienePermiso(identificacion, 25) Then
            btnAsignarPuesto.Enabled = False
        End If
    End Sub

    ''' <summary>
    ''' Busca los usuarios.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 18/06/2010, Modificado: 20/06/2010</remarks>
    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        Dim data As New DataTable
        Dim usuarios As List(Of Hashtable)
        Dim identificacion As String
        Dim nombre As String

        data.Columns.Add("Identificación")
        data.Columns.Add("Nombre y Apellidos")
        data.Columns.Add("Puesto")
        data.Columns.Add("Departamento")

        identificacion = txtIdentificacion.Text
        nombre = txtNombre.Text

        identificacion = identificacion.Replace("%", "[%]")
        nombre = nombre.Replace("%", "[%]")

        usuarios = Gestor.usuarioBuscar(identificacion, nombre)

        For Each usuario As Hashtable In usuarios
            Dim departamento As String

            If usuario("departamento") Is Nothing Then
                departamento = "Ninguno"
            Else
                departamento = usuario("departamento")
            End If

            data.Rows.Add(usuario("identificacion"), usuario("nombre") & " " & _
                          usuario("primerApellido") & " " & usuario("segundoApellido"), _
                          usuario("puesto"), departamento)
        Next

        If usuarios.Count = 0 Then
            lblError.ForeColor = Color.Red
            lblError.Text = "No hubo resultados en la búsqueda."
        Else
            lblError.Text = ""
        End If

        dgvUsuarios.DataSource = data
    End Sub

    ''' <summary>
    ''' Muestra la pantalla de consultar usuario.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 20/06/2010, Modificado: 20/06/2010</remarks>
    Private Sub btnConsultar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConsultar.Click
        Dim ucUsuarios As Usuarios
        Dim ucConsultarUsuario As ConsultarUsuario
        Dim ubicacion As New Point(152, 0)
        Dim identificacion As String

        Try
            identificacion = dgvUsuarios.SelectedRows(0).Cells(0).Value
            ucConsultarUsuario = New ConsultarUsuario(identificacion)
            ucConsultarUsuario.Location = ubicacion

            ucUsuarios = Me.Parent
            ucUsuarios.Controls.Add(ucConsultarUsuario)
            ucUsuarios.mostrar(ucConsultarUsuario)
            ucUsuarios.tvUsuarios.SelectedNode = Nothing
        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = "Seleccione un usuario."
        End Try
    End Sub

    ''' <summary>
    ''' Elimina un usuario.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 21/06/2010, Modificado: 21/06/2010</remarks>
    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        Dim identificacion As String
        Dim usuarioActual As Hashtable

        Try
            Try
                identificacion = dgvUsuarios.SelectedRows(0).Cells(0).Value
            Catch ex As Exception
                Throw New Exception("Seleccione un usuario.")
            End Try

            usuarioActual = Gestor.usuarioActual()

            If identificacion = usuarioActual("identificacion") Then
                Throw New Exception("No puede eliminar el usuario identificado.")
            End If

            If MsgBox("¿Seguro que desea eliminar al usuario?", MsgBoxStyle.YesNo, "Eliminar Usuario") = MsgBoxResult.Yes Then
                Gestor.usuarioEliminar(identificacion)

                dgvUsuarios.DataSource = Nothing
                lblError.ForeColor = Color.Green
                lblError.Text = "Se eliminó el usuario correctamente."
            Else
                lblError.Text = ""
            End If
        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = ex.Message
        End Try

    End Sub

    ''' <summary>
    ''' Muestra la pantalla de cambiar estado.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 22/06/2010, Modificado: 22/06/2010</remarks>
    Private Sub btnCambiarEstado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCambiarEstado.Click
        Dim cambiarEstado As CambiarEstado
        Dim identificacion As String

        Try
            identificacion = dgvUsuarios.SelectedRows(0).Cells(0).Value
            cambiarEstado = New CambiarEstado(identificacion)

            If cambiarEstado.ShowDialog() = DialogResult.OK Then
                lblError.ForeColor = Color.Green
                lblError.Text = "Se cambió el estado del usuario correctamente."
            Else
                lblError.Text = ""
            End If
        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = "Seleccione un usuario."
        End Try
    End Sub

    ''' <summary>
    ''' Muestra la pantalla de consultar metas.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 23/06/2010, Modificado: 23/06/2010</remarks>
    Private Sub btnMetas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMetas.Click
        Dim identificacion As String
        Dim ucUsuarios As Usuarios
        Dim ubicacion As New Point(152, 0)
        Dim ucConsultarMetas As ConsultarMetas

        Try
            identificacion = dgvUsuarios.SelectedRows(0).Cells(0).Value
            ucConsultarMetas = New ConsultarMetas(identificacion)
            ucConsultarMetas.Location = ubicacion

            ucUsuarios = Me.Parent
            ucUsuarios.Controls.Add(ucConsultarMetas)
            ucUsuarios.mostrar(ucConsultarMetas)
        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = "Seleccione un usuario."
        End Try
    End Sub

    ''' <summary>
    ''' Vacía la búsqueda cuando se muestra la pantalla.
    ''' </summary>
    ''' <remarks>Creado Por: Elías Baldioceda, Fecha: 23/06/2010, Modificado: 23/06/2010</remarks>
    Private Sub BuscarUsuario_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.VisibleChanged
        If Visible = True Then
            dgvUsuarios.DataSource = Nothing
            lblError.Text = ""
        End If
    End Sub

    Private Sub btnAsignarPuesto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsignarPuesto.Click
        Dim usuario As Hashtable

        Try
            Dim identificacion As String

            Try
                identificacion = dgvUsuarios.SelectedRows(0).Cells(0).Value
            Catch ex As Exception
                Throw New Exception("Seleccione un usuario.")
            End Try

            usuario = Gestor.usuarioBuscar(identificacion)

            If usuario("rol") = 3 Then
                Dim asignarPuesto As New AgregarPuestoUsuario(identificacion)

                If asignarPuesto.ShowDialog() = DialogResult.OK Then
                    lblError.ForeColor = Color.Green
                    lblError.Text = "Se ha asignado un puesto correctamente."
                    dgvUsuarios.DataSource = Nothing
                Else
                    lblError.Text = ""
                End If
            Else
                Throw New Exception("El usuario debe ser de rol empleado común para asignarle un puesto.")
            End If
        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = ex.Message
        End Try
    End Sub
End Class
